home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / tetris3.src < prev    next >
Text File  |  1991-05-29  |  10KB  |  554 lines

  1. %%HP: T(3)A(D)F(.);
  2. @ TETRIS3, by Andrey Dolgachev
  3. DIR
  4.   SETUP
  5.     \<<
  6.       IFERR ASC\->
  7.       THEN XFIG
  8. ASC\-> 'XFIG' STO
  9. TFIG ASC\-> 'TFIG'
  10. STO DISS ASC\->
  11. 'DISS' STO PIC1
  12. ASC\-> 'PIC1' STO
  13. PIC2 ASC\-> 'PIC2'
  14. STO 'SETUP' PURGE
  15.       ELSE
  16. "Please make sure that
  17. ASC\-> is in or above 
  18. this directory level."
  19. 1 DISP INFLP
  20.       END
  21.     \>>
  22.   start
  23.     \<< LCD\-> PREP
  24. SWAP DEPTH 'L' STO
  25. IFERR TETRIS THEN
  26.     END "" 3 DISP
  27. "" 4 DISP DEPTH L -
  28. DROPN 3 DISER STOF
  29. "" 'SAV' STO
  30.     IF DLST 4 GET
  31.     THEN PNTS
  32. "Points" \->TAG LINS
  33. "Lines" \->TAG LVL
  34. "Level" \->TAG
  35.     END
  36.   \>>
  37. RESU
  38.   \<< IFERR LCD\-> PREP
  39. SWAP DEPTH 'L' STO
  40. MKSCR SAV LIST\->
  41. DROP PICT SWAP {
  42. # 43d # 0d } SWAP
  43. REPL CONT THEN
  44. "Game is not paused.
  45. Press START to start
  46. a new game."
  47. 3 DISP DROP INFLP
  48.   END
  49. \>>
  50.               ABOUT
  51. \<< PREP CLLCD
  52. "   - Tetris3.0 by - 
  53.    Andrey Dolgachev
  54.      - Credits - 
  55. Erik Bryntse for the
  56. original HP48 version.
  57. Joe Ervin for the 
  58. Screen Dissolve code."
  59. 1 DISP INFLP STOF
  60. \>>
  61.               HELP
  62. \<< PREP CLLCD
  63. "RESU   - Resume paused
  64.          game
  65.  
  66. HIGH   - Show Top 5
  67.  
  68. CONFIG - Personalize
  69.          your Tetris"
  70. 1 DISP INFLP CLLCD
  71. "      DURING GAME
  72.  
  73. N - Draw Next
  74. O - Off       8 - Flip
  75. P - Pause   4,6 - R,L
  76. Q - Quit      0 - Drop
  77. K - Up a level"
  78. 1 DISP INFLP STOF
  79. \>>
  80.               HIGH
  81. \<< LCD\-> PREP SWAP
  82. DUP PICT SWAP {
  83. # 0d # 0d } SWAP
  84. REPL { # 0d # 0d }
  85. PVIEW DRHI 3 DISER
  86. STOF
  87. \>>
  88.               CONFIG
  89. \<< PREP CLLCD
  90. "There are three 
  91. dissolve sequences. 
  92. Enter the appropriate
  93. codes next screen.
  94. A 0 means no dissolve,
  95. 1 is bit-wise,
  96. 2 is tiling effect."
  97. 1 DISP INFLP
  98. "Enter the diss. codes"
  99. { ":1:1
  100. :2:1
  101. :3:1"
  102. { -1 4 } } INPUT
  103. OBJ\->
  104. "Do you want your score
  105. to be left on the 
  106. stack? (0/1)"
  107. { "1" -1 } INPUT
  108. OBJ\->
  109. "Enter your starting
  110. level (0-9)"
  111. { "0" -1 } INPUT
  112. OBJ\-> 5 \->LIST 'DLST'
  113. STO
  114. "Do you want your high
  115. scores erased? (0/1)"
  116. { "0" -1 } INPUT
  117.   IF "1" ==
  118.   THEN Erase
  119.   END STOF
  120. \>>
  121.               Erase
  122. \<< { 0 "" 0 } DUP
  123. DUP2 DUP 5 \->LIST
  124. 'SCORES' STO
  125. \>>
  126.               DLST
  127. { :1: 1 :2: 1 :3: 1
  128. 1 0 }
  129.               RK2
  130. \<<
  131.   IF KEY
  132.   THEN
  133.     IF { 25 72 74
  134. 92 63 34 35 33 32 }
  135. SWAP POS DUP
  136.     THEN {
  137.       \<<
  138.         IF LVL 9 <
  139.         THEN 'LVL'
  140. INCR GETLV SHLV
  141.         END
  142.       \>>
  143.       \<< # 1d NEG
  144. MSIDE
  145.       \>>
  146.       \<< # 1d MSIDE
  147.       \>> DROPIT ROTF
  148.       \<< PICT {
  149. # 43d # 0d } {
  150. # 84d # 60d } SUB
  151. DEPTH L - \->LIST
  152. 'SAV' STO 3 DISER
  153. STOF HALT
  154.       \>>
  155.       \<< 3 SF
  156.       \>> OFF
  157.       \<< 7 FC?C
  158.         IF
  159.         THEN 7 SF
  160. SHNP
  161.         ELSE ERNP
  162.         END
  163.       \>> } SWAP GET
  164. EVAL
  165.     ELSE DROP
  166.     END
  167.   END
  168. \>>
  169.               PREP
  170. \<< RCLF -40 CF STD
  171. 64 STWS # 131d
  172. # 64d PDIM
  173. \>>
  174.               PNTS
  175. 11
  176.               LINS
  177. 0
  178.               LVL 0
  179.               XFIG  @ by Erik Bryntse.  Decode with ASC->
  180. "CCD204410034E7507137143818F8E1358BE60691117E818F328FB97601CE1B56
  181. 507146134152739E1B20F880029916912014313234E4A201428A2606EB016915
  182. 271011741431321428A63E16915271001741431321428A68C1691567AFAAF122
  183. A95118C9AF5BF522A8520A8181D22A82C1201B56507146818F29818F29C91341
  184. 19BF2BF2241542BF616F16F1610D880BEBF4BF4BF4AF68AA60688F208F2D7601
  185. 42164808CE7C9"
  186.               TFIG  @ By Erik Bryntse.  Decode with ASC->
  187. "CCD20E310013606DD061B97507142137135818F098BA606FF014713481AF0914
  188. 234E4A208A26060E01691527100E717414381AF2914581AF291321428A26060B
  189. 01691567AFAAF1D122A95118C9D5F522A8520A81819F122A82C1201B56507146
  190. 818F29818F29C9136AF2156090A90B456E002F308200E49BF4BF4BF4AF68AE09
  191. AF0AF2AC48108087340E68084396840E614313216915472007DD071361421648
  192. 08C3CA6"
  193.               DISS  @ by Joe Ervin.  Decode with ASC->
  194. "D9D20D4881D8A812BF8170140D9D208813026AC130A503223030A50322301192
  195. 004000A3D36D9D2044230C2A207200094E66716C69646027425F424024416471
  196. 6933A1B21301192038000A3D36D9D2044230C2A207200094E66716C696460274
  197. 25F4240244164716933A1B2130F7815322301192004000A3D36D9D2044230C2A
  198. 207200094E66716C696460205943445023596A756933A1B21301192038000A3D
  199. 36D9D2044230C2A207200094E66716C696460205943445023596A756933A1B21
  200. 3032230AEC8111920F780032230CCD20851008F14660AF38A850B478F14660AF
  201. 2DE109143818F09818F0981AF02174E78FB97601F56507147818F29818F2981A
  202. F08AF234FFF3094B9034FFF00D7AF0103104AF2311194B6031F0AE581AF13777
  203. 011CC6C6114C2818F220EF781AF0C81AF0B94F92819F2819F281AF0B81961AE4
  204. 80863A080857AE881AF1181AF1B8B280DE721081AF148AC298D3415081AF1AC2
  205. 135AF014B0E6011B13381AF10C213313514FBED0E650E6ABED15D001B2130B21
  206. 309C7D"
  207.               PIC1
  208. "E1B20FF0008100022000FFFFFF3000FFFFFF3000308300300010830020000083
  209. 0000000083000000008300000000830000000083000000008300000000830000
  210. 0000830000000083000000008300000000830000000083EFCF3000836CC63000
  211. 8368462000836006000083E706000083600600008368060000836C060000C7EF
  212. 0F00D0FE"
  213.               PIC2
  214. "E1B20FF000810002200000008FFF3000008FFF30000083003000008100200000
  215. 8100000000810000000081000000008100000000810000000081000000008100
  216. 00000087000000008FFF300000000C300000000030E7E700003036C300003016
  217. 810000303681000030E7810000308681800030C68181083066C38FFF3037E78F
  218. FF3002D5"
  219.               TETRIS
  220. \<< DLST 5 GET GETLV
  221. 3 CF 7 CF RAND 7 *
  222. IP 1 + 'NPC' STO 0
  223. 'PNTS' STO 0 'LINS'
  224. STO 0 'LVL' STO
  225. MKSCR
  226.   DO delay FLST NPC
  227. RAND 7 * IP 1 +
  228. 'NPC' STO SHNP DUP
  229. 'OB1' STO GET 1 DUP
  230. 'OB2' STO GET # 12d
  231. # 256d - 1 CF 0
  232. 'CP' STO
  233.     DO RK2 RK2 RK2
  234. RK2 a WAIT
  235.       IF 1 FC?
  236.       THEN
  237.         IF 3 FC?
  238.         THEN DUP2
  239. # 0d XFIG # 256d +
  240. DUP2 # 0d + TFIG
  241.           IF # 0d
  242. ==
  243.           THEN DUP2
  244. # 63903d XFIG 'CP'
  245. INCR DROP
  246.           ELSE
  247. # 256d - # 63903d
  248. XFIG # 0d
  249.           END
  250.         END
  251.       END
  252.     UNTIL DUP # 0d
  253. == 3 FS? OR
  254.     END
  255.     IF 3 FC?
  256.     THEN CALP ADDP
  257. DROP PACK MEM DROP
  258.     END
  259.   UNTIL FULL 3 FS?
  260. OR
  261.   END FIN
  262. \>>
  263.               FULL
  264. \<<
  265. # 72356802986000645d
  266. # 522d DUP2 # 0d +
  267. TFIG ROT ROT # 5d +
  268. TFIG + # 0d >
  269. \>>
  270.               P2
  271. \<< 1 ADDL DUP
  272. # 3840d AND SRB 4 *
  273. 3 + # 43d SWAP 2
  274. \->LIST PICT SWAP {
  275. # 83d # 8d } SUB
  276. PICT { # 43d # 12d
  277. } ROT REPL
  278. \>>
  279.               PACK
  280. \<< # 3338d
  281.   DO TLIN
  282.     IF # 4d ==
  283.     THEN P2
  284.     ELSE # 256d -
  285.     END
  286.   UNTIL DUP # 512d
  287. <
  288.   END DROP
  289. \>>
  290.               TLIN
  291. \<< DUP
  292. # 72356802986000645d
  293. SWAP DUP2 # 0d +
  294. TFIG ROT ROT # 5d +
  295. TFIG +
  296. \>>
  297.               FLST
  298. { {
  299. # 17802707620356d
  300. # 279242096899d
  301. # 35399189680388d
  302. # 279242096901d } {
  303. # 17802707620357d
  304. # 279242097155d
  305. # 17806986854917d
  306. # 279242096645d } {
  307. # 17802707620355d
  308. # 206226604548d
  309. # 17944425808389d
  310. # 279242097157d } {
  311. # 17802708664837d
  312. # 279241044483d } {
  313. # 35399188627717d
  314. # 210504794628d } {
  315. # 52926935483141d
  316. # 279242097412d } {
  317. # 206226600196d } }
  318.               DROPIT
  319. \<< 1 SF
  320.   DO DUP2 # 0d XFIG
  321. # 256d + DUP2 # 0d
  322. + TFIG
  323.     IF # 0d \=/
  324.     THEN # 256d -
  325. # 63903d XFIG # 0d
  326.     END
  327.   UNTIL DUP # 0d ==
  328.   END
  329. \>>
  330.               MSIDE
  331. \<< \-> CD
  332.   \<< DUP2 # 0d XFIG
  333. CD + DUP2 # 0d +
  334. TFIG
  335.     IF # 0d \=/
  336.     THEN CD -
  337.     END DUP2
  338. # 63903d XFIG
  339.   \>>
  340. \>>
  341.               ROTF
  342. \<< DUP2 # 0d XFIG
  343. FLST OB1 GET OB2 1
  344. -
  345.   IF DUP 0 \<=
  346.   THEN DROP DUP
  347. SIZE
  348.   END DUP \-> OS2
  349.   \<< GET SWAP DUP2
  350. # 0d + TFIG
  351.     IF # 0d ==
  352.     THEN ROT DROP
  353. OS2 'OB2' STO
  354.     ELSE SWAP DROP
  355.     END DUP2
  356. # 63903d XFIG
  357.   \>>
  358. \>>
  359.               OB1 5
  360.               OB2 1
  361.               PPAR
  362. { (-6.5,-3.1)
  363. (6.5,3.2) X 0 (0,0)
  364. FUNCTION Y }
  365.               GTNP
  366. \<< \-> i
  367.   \<< FLST i GET 1
  368. GET
  369.     CASE i 6 ==
  370.       THEN # 2068d
  371.       END i 7 ==
  372.       THEN # 2580d
  373.       END i 6 <
  374.       THEN # 2324d
  375.       END
  376.     END
  377.   \>>
  378. \>>
  379.               SHNP
  380. \<<
  381.   IF 7 FS?
  382.   THEN ERNP NPC
  383. GTNP # 63903d XFIG
  384.   END
  385. \>>
  386.               ERNP
  387. \<< PICT { # 86d
  388. # 34d } # 22d # 17d
  389. BLANK REPL
  390. \>>
  391.               NPC 5
  392.               L 2
  393.               SAV
  394. ""
  395.               GETLV
  396. \<< 10 SWAP - .04 *
  397. DUP 'a' STO 'b' STO
  398. \>>
  399.               CALP
  400. \<< LVL 2 * 24 + CP -
  401.   IF 7 FS?
  402.   THEN .75 * IP
  403.   END
  404. \>>
  405.               delay
  406. \<< b .004 - DUP
  407.   IF 0 \<=
  408.   THEN .004 DUP 'a'
  409. STO 'b' STO DROP
  410.   ELSE
  411.     IF DUP .04 MOD
  412. 0 ==
  413.     THEN DUP 'a'
  414. STO 'LVL' INCR SHLV
  415.     END 'b' STO
  416.   END
  417. \>>
  418.               CP 8
  419.               a .4
  420.               b
  421. .392
  422.               MKSCR
  423. \<< DUP ERASE PICT {
  424. # 91d # 38d } PIC2
  425. REPL (-6.5,3.2)
  426. (6.5,-3.1) BOX
  427. (-2.2,3.2)
  428. (1.9,-2.8) BOX
  429. (-6.5,1.8)
  430. (6.5,1.6) BOX 1.5
  431. 1.1
  432.   FOR I -6.5 I R\->C
  433. 6.5 I .1 - R\->C BOX
  434. -.2
  435.   STEP PICT { # 3d
  436. # 38d } PIC1 REPL
  437. PICT { # 44d # 0d }
  438. # 40d # 60d BLANK
  439. REPL PICT { # 95d
  440. # 2d } "LINES :" 1
  441. \->GROB REPL PICT {
  442. # 2d # 2d }
  443. "SCORE :" 1 \->GROB
  444. REPL PICT { # 91d
  445. # 28d } "NEXT" 1
  446. \->GROB REPL PICT {
  447. # 7d # 28d }
  448. "LEVEL :" 1 \->GROB
  449. REPL 0 ADDP 0 ADDL
  450. SHLV PICT RCL SWAP
  451. PICT SWAP { # 0d
  452. # 0d } SWAP REPL {
  453. # 0d # 0d } PVIEW 1
  454. DISER
  455. \>>
  456.               DISER
  457. \<< DLST SWAP GET
  458. DTAG
  459.   IF DUP 0 ==
  460.   THEN DROP ERASE
  461. PICT SWAP { # 0d
  462. # 0d } SWAP REPL
  463.   ELSE 1 - SWAP
  464. DISS
  465.   END
  466. \>>
  467.               INFLP
  468. \<< 0 WAIT DROP
  469. \>>
  470.               ADDL
  471. \<< 'LINS' STO+ PICT
  472. { # 100d # 8d }
  473. LINS 1 \->GROB REPL
  474. \>>
  475.               ADDP
  476. \<< 'PNTS' STO+ PICT
  477. { # 5d # 8d } PNTS
  478. 1 \->GROB REPL
  479. \>>
  480.               SHLV
  481. \<< PICT { # 37d
  482. # 28d } LVL 1 \->GROB
  483. REPL
  484. \>>
  485.               FIN
  486. \<< SCORES 5 GET CHHS
  487.   IF
  488.   THEN HI
  489.   END DRHI
  490. \>>
  491.               HI
  492. \<< 4 \-> I
  493.   \<<
  494. "CONGRATS, YOU REACHED
  495. THE TOP FIVE"
  496. { "" \Ga } INPUT
  497. ERASE LCD\-> PICT
  498. SWAP { # 0d # 0d }
  499. SWAP REPL { # 0d
  500. # 0d } PVIEW PNTS
  501. SWAP LINS 3 \->LIST
  502.     DO
  503.       IF I 0 ==
  504.       THEN 0
  505.       ELSE SCORES I
  506. GET CHHS
  507.       END
  508.       IF
  509.       THEN -1 'I'
  510. STO+ 0
  511.       ELSE SCORES 1
  512. I SUB SWAP 1 \->LIST
  513. + SCORES I 1 + 4
  514. SUB + 'SCORES' STO
  515. 1
  516.       END
  517.     UNTIL
  518.     END
  519.   \>>
  520. \>>
  521.               DRHI
  522. \<< -.8 1.9 -6 -2.5
  523. 4.5 \-> N Y X1 X2 X3
  524.   \<< # 131d # 64d
  525. BLANK "HIGH SCORES"
  526. 3 \->GROB (-3.2,3.1)
  527. SWAP REPL "SCORE"
  528. -6.3 Y DRSC "NAME"
  529. -1.1 Y DRSC "LINES"
  530. 3.5 Y DRSC 1 5 -.2
  531. 'Y' STO+
  532.     FOR I N 'Y'
  533. STO+ SCORES I GET
  534. LIST\-> DROP 4 ROLL
  535. SWAP X3 Y DRSC SWAP
  536. X2 Y DRSC SWAP X1 Y
  537. DRSC
  538.     NEXT 2 DISER
  539. INFLP
  540.   \>>
  541. \>>
  542.               DRSC
  543. \<< R\->C SWAP 2 \->GROB
  544. REPL
  545. \>>
  546.               CHHS
  547. \<< 1 GET PNTS <
  548. \>>
  549.               SCORES
  550. { { 0 "" 0 } { 0 ""
  551. 0 } { 0 "" 0 } { 0
  552. "" 0 } { 0 "" 0 } }
  553.             END
  554.